package com.wtwd.campus.service;

import com.wtwd.campus.common.RespCodeEntity;
import com.wtwd.campus.entity.*;
import com.wtwd.campus.service.serviceImpl.RMFeignClientServiceImpl;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(value = "RocketMQService", fallback = RMFeignClientServiceImpl.class)
public interface IRMFeignClientService {

    // 查询定位的回复
    @PostMapping("/up/queryLocationResponse")
    RespCodeEntity queryLocationResponse(@RequestBody MqDeviceUpLocation mqDeviceUpLocation);

    // 查询设备参数的回复
    @PostMapping("/up/queryParamResponse")
    RespCodeEntity queryParamResponse(@RequestBody MqDeviceParam mqDeviceParam);

    // 查询Iccid和Sim卡的回复
    @PostMapping("/up/querySimCardAndIccidResponse")
    RespCodeEntity querySimCardAndIccidResponse(@RequestBody MqIccidAndSimCard mqIccidAndSimCard);

    // 查询设备Imeid回复
    @PostMapping("/up/queryImeidResponse")
    RespCodeEntity queryImeidResponse(@RequestBody MqDeviceImeid mqDeviceImeid);

    // 设置临时监控中心回复
    @PostMapping("/up/tempControlCenterResponse")
    RespCodeEntity tempControlCenterResponse(@RequestBody MqIpAndPortResult mqIpAndPortResult);

    // 设置默认监控中心回复
    @PostMapping("/up/defaultControlCenterResponse")
    RespCodeEntity defaultControlCenterResponse(@RequestBody MqIpAndPortResult mqIpAndPortResult);

    // 设置工作模式的回复
    @PostMapping("/up/modeResponse")
    RespCodeEntity modeResponse(@RequestBody MqModeResult mqModeResult);

    // 设置上报间隔的回复
    @PostMapping("/up/uploadResponse")
    RespCodeEntity uploadResponse(@RequestBody MqUploadResult mqUploadResult);

    // 设置闲时自动切换的回复
    @PostMapping("/up/sleepAutoChangeModeResponse")
    RespCodeEntity sleepAutoChangeModeResponse(@RequestBody MqAutoChangeModeResult mqAutoChangeModeResult);

    // 监听号码设置的结果
    @PostMapping("/up/monitorResponse")
    RespCodeEntity monitorResponse(@RequestBody MqMonitorResult mqMonitorResult);

    // 设置课堂模式的回复
    @PostMapping("/up/classModeResponse")
    RespCodeEntity classModeResponse(@RequestBody MqClassModeResult mqClassModeResult);

    // 设置课堂模式开关的回复
    @PostMapping("/up/classModeSwitchResponse")
    RespCodeEntity classModeSwitchResponse(@RequestBody MqGeneralSwitchResult mqGeneralSwitchResult);

    // 设置课表考勤开关
    @PostMapping("/up/callFunResponse")
    RespCodeEntity callFunResponse(@RequestBody MqGeneralSwitchResult mqGeneralSwitchResult);

    // 设置PDOP门限回复
    @PostMapping("/up/setPDOPResponse")
    RespCodeEntity setPDOPResponse(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 设置SOS开关回复
    @PostMapping("/up/sosSwitchResponse")
    RespCodeEntity sosSwitchResponse(@RequestBody MqGeneralSwitchResult mqGeneralSwitchResult);

    // 恢复出厂设置的回复
    @PostMapping("/up/reSetDeviceResponse")
    RespCodeEntity reSetDeviceResponse(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 重启回复
    @PostMapping("/up/reStartDeviceResponse")
    RespCodeEntity reStartDeviceResponse(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 音量调节的回复
    @PostMapping("/up/volumeAdjustResponse")
    RespCodeEntity volumeAdjustResponse(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 切换设备id的回复
    @PostMapping("/up/changeIdResponse")
    RespCodeEntity changeIdResponse(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 单独白名单回复
    @PostMapping("/up/whiteCallResponse")
    RespCodeEntity whiteCallResponse(@RequestBody MqSingleWhiteCallResult mqSingleWhiteCallResult);

    // 一次设置全部白名单
    @PostMapping("/up/allWhiteCallResponse")
    RespCodeEntity allWhiteCallResponse(@RequestBody MqAllWhiteCallResult mqAllWhiteCallResult);

    // 设置白名单开关
    @PostMapping("/up/whiteCallSwitch")
    RespCodeEntity whiteCallSwitch(@RequestBody MqGeneralSwitchResult mqGeneralSwitchResult);

    // SOS上报
    @PostMapping("/up/sosMessage")
    RespCodeEntity upSOSMessage(@RequestBody MqSOSUpMessage mqSOSUpMessage);

    // 低电上报
    @PostMapping("/up/lowBatteryMessage")
    RespCodeEntity upLowBatteryMessage(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 心跳上报
    @PostMapping("/up/heartBeatMessage")
    RespCodeEntity upHeartBeatMessage(@RequestBody MqHeartBeatMessage mqHeartBeatMessage);

    // 步数上报
    @PostMapping("/up/stepMessage")
    RespCodeEntity upStepMessage(@RequestBody MqStepAndBatteryMessage mqStepAndBatteryMessage);

    // 主动获取之后的步数上报
    @PostMapping("/up/activeGetStepMessage")
    RespCodeEntity activeGetStepMessage(@RequestBody MqStepAndBatteryMessage mqStepAndBatteryMessage);

    // 通话记录上报
    @PostMapping("/up/callNoteMessage")
    RespCodeEntity upCallNoteMessage(@RequestBody MqCallNoteMessage mqCallNoteMessage);

    // 监听记录上报
    @PostMapping("/up/monitorNoteMessage")
    RespCodeEntity monitorNoteMessage(@RequestBody MqCallNoteMessage mqCallNoteMessage);

    // 上报wifiMac
    @PostMapping("/up/wifiMac")
    RespCodeEntity uploadWifiMac(@RequestBody MqWifiData mqWifiData);

    // 开机上报
    @PostMapping("/up/powerOn")
    RespCodeEntity upPowerOn(@RequestBody MqPowerOnMessage mqPowerOnMessage);

    // 修改m1卡回复
    @PostMapping("/up/resetM1CardResponse")
    RespCodeEntity resetM1Card(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 清除Sim卡
    @PostMapping("/up/CleanSimCard")
    RespCodeEntity cleanSimCard(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 一次设置全部SOS
    @PostMapping("/up/allSosResponse")
    RespCodeEntity allSosResponse(@RequestBody MqAllSosResult mqAllSosResult);

    // 关机告警
    @PostMapping("/up/shutDownWarning")
    RespCodeEntity shutDownWarning(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    // 关机告警
    @PostMapping("/up/setShutDownSilent")
    RespCodeEntity setShutDownSilent(@RequestBody MqGeneralSwitchResult mqGeneralSwitchResult);

    // 下发绑定关系的回复
    @PostMapping("/up/sendBindingStatusReply")
    RespCodeEntity sendBindingStatusReply(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    //设置闹钟的回复
    @PostMapping("/up/setAlarmReply")
    RespCodeEntity setAlarmReply(@RequestBody MqAlarmResult mqAlarmResult);

    //删除闹钟的回复
    @PostMapping("/up/delAlarmReply")
    RespCodeEntity delAlarmReply(@RequestBody MqAlarmResult mqAlarmResult);

    //设置文本的回复
    @PostMapping("/up/sendTextReply")
    RespCodeEntity sendTextReply(@RequestBody MqTextData mqTextData);

    //考勤机的注册指令上报
    @PostMapping("/up/attendanceRegistry")
    RespCodeEntity attendanceRegistry(@RequestBody MqAttendanceData mqAttendanceData);

    //考勤数据上报
    @PostMapping("/up/sendAttendanceData")
    RespCodeEntity sendAttendanceData(@RequestBody AttendanceSendDataList attendanceSendDataList);

    // 威科姆免打扰
    @PostMapping("/up/vcomNotDisturb")
    RespCodeEntity vcomNotDisturbReply(@RequestBody MqGeneralReply mqGeneralReply);

    // 威科姆通知消息
    @PostMapping("/up/vcomNoticeMessage")
    RespCodeEntity vcomNoticeMessage(@RequestBody MqGeneralReply mqGeneralReply);

    // 威科姆短消息
    @PostMapping("/up/vcomShortMessage")
    RespCodeEntity vcomShortMessage(@RequestBody MqGeneralReply mqGeneralReply);

    //威科姆对接获取联通密匙
    @PostMapping("/up/getLtAuthKey")
    RespCodeEntity getLtAuthKey(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    @PostMapping("/up/getPhone")
    RespCodeEntity getPhone(@RequestBody MqGeneralValueResult mqGeneralValueResult);

    /**
     * 用于设备上传app信息
     *
     * @param mqUpLoadApp
     * @return
     */
    @PostMapping("/up/upLoadApp")
    RespCodeEntity upLoadApp(@RequestBody MqUpLoadApp mqUpLoadApp);

    /**
     * 用于上传app文件
     *
     * @param mqUplocadAppFile
     * @return
     */
    @PostMapping("/up/upLoadAppFile")
    RespCodeEntity upLoadAppFile(@RequestBody MqUplocadAppFile mqUplocadAppFile);

    /**
     * 设置app安装回复
     *
     * @param mqGeneralSwitchResult
     * @return
     */
    @PostMapping("/up/setAppInstallationReceiver")
    RespCodeEntity setAppInstallationReceiver(@RequestBody MqGeneralSwitchResult mqGeneralSwitchResult);

    /**
     * 设置app禁用回复
     *
     * @param mqAppDisable
     * @return
     */
    @PostMapping("/up/setAppDisableReceiver")
    RespCodeEntity setAppDisableReceiver(@RequestBody MqAppDisable mqAppDisable);

    /**
     * 设置锁网回复
     *
     * @param lockNet
     * @return
     */
    @PostMapping("/up/setLockNetReceiver")
    RespCodeEntity setLockNetReceiver(@RequestBody MqLockNet lockNet);

    /**
     * 设置锁卡回复
     *
     * @param mqLockCard
     * @return
     */
    @PostMapping("/up/setLockCardReceiver")
    RespCodeEntity setLockCardReceiver(@RequestBody MqLockCard mqLockCard);

    /**
     * 设置锁机回复
     *
     * @param mqLockDevice
     * @return
     */
    @PostMapping("/up/setLockDeviceReceiver")
    RespCodeEntity setLockDeviceReceiver(@RequestBody MqLockDevice mqLockDevice);

    /**
     * 同步设备锁卡状态回复
     *
     * @param mqLockCard
     * @return
     */
    @PostMapping("/up/getLockCardReceiver")
    RespCodeEntity getLockCardReceiver(@RequestBody MqLockCard mqLockCard);

    /**
     * 同步锁机状态
     *
     * @param mqLockDevice
     * @return
     */
    @PostMapping("/up/getLockDeviceReceiver")
    RespCodeEntity getLockDeviceReceiver(@RequestBody MqLockDevice mqLockDevice);

    /**
     * 同步锁网状态
     *
     * @param lockNet
     * @return
     */
    @PostMapping("/up/getLockNetReceiver")
    RespCodeEntity getLockNetReceiver(@RequestBody MqLockNet lockNet);
}
